package plus.xj17520.base.result;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @projectName: pethomeProject
 * @package: plus.xj17520.result
 * @className: JSONResult
 * @author: XiaoJue
 * @description: TODO
 *                     统一返回结果集
 * @date: 2022/5/23 11:09
 * @version: 1.0
 */
@Data
@ApiModel(description = "后台返回数据-->统一接口")
public class JSONResult {

        //接口状态（true：成功；false：失败）
        @ApiModelProperty(value = "接口状态（true：成功；false：失败）")
        private Boolean success = true;

        //成功统一返回0000，其余编码全部是错误码
        @ApiModelProperty(value = "成功统一返回0000，其余编码全部是错误码")
        private String code = "0000";

        //返回前端的提示信息（成功）
        @ApiModelProperty(value = "返回前端的提示信息（成功）")
        private String message = "成功";

        //没有指定错误码时，统一返回这个错误码
        @ApiModelProperty(value = "没有指定错误码时，统一返回这个错误码9999")
        private static String errorCode = "9999";

        //返回前端的提示信息（失败）
        @ApiModelProperty(value = "返回前端的提示信息（失败）")
        private static String errorMessage = "失败";

        //存储返回给前端的数据
        @ApiModelProperty(value = "存储返回给前端的数据")
        private Object data;

        //创建当前实例（成功）
        public static JSONResult success(){
            return new JSONResult();
        }

        //创建当前实例（成功），并设置数据返回
        public static JSONResult success(Object obj){
            JSONResult instance = new JSONResult();
            instance.setData(obj);
            return instance;
        }

        //创建当前实例（成功），并设置数据和状态码返回
        public static JSONResult success(Object obj, String code){
            JSONResult instance = new JSONResult();
            instance.setCode(code);
            instance.setData(obj);
            return instance;
        }

        //创建当前实例（失败）
        public static JSONResult error(){
            JSONResult instance = new JSONResult();
            instance.setCode(errorCode);
            instance.setSuccess(false);
            instance.setMessage(errorMessage);
            return instance;
        }

        //创建当前实例（失败）
        public static JSONResult error(String code, String message){
            JSONResult instance = new JSONResult();
            instance.setCode(code);
            instance.setSuccess(false);
            instance.setMessage(message);
            return instance;
        }

        //创建当前实例（失败），并返回指定错误信息
        public static JSONResult error(String message){
            JSONResult instance = new JSONResult();
            instance.setCode(errorCode);
            instance.setSuccess(false);
            instance.setMessage(message);
            return instance;
        }

        //创建当前实例（失败），并返回指定错误信息和数据
        public static JSONResult error(String message, Object obj){
            JSONResult instance = new JSONResult();
            instance.setCode(errorCode);
            instance.setSuccess(false);
            instance.setMessage(message);
            instance.setData(obj);
            return instance;
        }

}
